#ifndef _CMD_BIND_H_
#define _CMD_BIND_H_

typedef enum {
	K_NONE = 0,
	K_BACKSPACE = 8,
	K_TAB = 9,
	K_ENTER = 13,
	K_ESCAPE = 27,
	K_SPACE = 32,

	K_SHIFT=128,
	K_CTRL,
	K_ALT,
	K_PAUSE,
	K_CAPS,
	K_TILDE,

	K_INS,
	K_DEL,
	K_HOME,
	K_END,
	K_PGUP,
	K_PGDN,

	K_UPARROW,
	K_DOWNARROW,
	K_LEFTARROW,
	K_RIGHTARROW,

	K_KP_0,
	K_KP_1,
	K_KP_2,
	K_KP_3,
	K_KP_4,
	K_KP_5,
	K_KP_6,
	K_KP_7,
	K_KP_8,
	K_KP_9,
	K_KP_DIVIDE,
	K_KP_MULTIPLY,
	K_KP_MINUS,
	K_KP_PLUS,
	K_KP_ENTER,
	K_KP_PERIOD,

	K_MINUS,
	K_PLUS,
	K_LBRACKET,
	K_RBRACKET,
	K_BACKSLASH,
	K_SEMICOLON,
	K_QUOTE,
	K_COMMA,
	K_PERIOD,
	K_SLASH,

	K_F1,
	K_F2,
	K_F3,
	K_F4,
	K_F5,
	K_F6,
	K_F7,
	K_F8,
	K_F9,
	K_F10,
	K_F11,
	K_F12,
	K_F13,
	K_F14,
	K_F15,

	K_MOUSE1,
	K_MOUSE2,
	K_MOUSE3,
	K_MOUSE4,
	K_MOUSE5,
	K_MOUSE6,
	K_MOUSE7,
	K_MOUSE8,

	K_MWHEELDOWN,
	K_MWHEELUP,

	K_JOY1,
	K_JOY2,
	K_JOY3,
	K_JOY4,
	K_JOY5,
	K_JOY6,
	K_JOY7,
	K_JOY8,
	K_JOY9,
	K_JOY10,
	K_JOY11,
	K_JOY12,
	K_JOY13,
	K_JOY14,
	K_JOY15,
	K_JOY16,
	K_JOY17,
	K_JOY18,
	K_JOY19,
	K_JOY20,
	K_JOY21,
	K_JOY22,
	K_JOY23,
	K_JOY24,
	K_JOY25,
	K_JOY26,
	K_JOY27,
	K_JOY28,
	K_JOY29,
	K_JOY30,
	K_JOY31,
	K_JOY32,

	K_AUX1,
	K_AUX2,
	K_AUX3,
	K_AUX4,
	K_AUX5,
	K_AUX6,
	K_AUX7,
	K_AUX8,
	K_AUX9,
	K_AUX10,
	K_AUX11,
	K_AUX12,
	K_AUX13,
	K_AUX14,
	K_AUX15,
	K_AUX16,

	K_LAST_KEY		// this had better be <256!
} EKeyCodes;


void cmd_initBind();
void cmd_shutdownBind();
void cmd_bind(int key, const char* cmd);
const char* cmd_getBind(int key);
const char* cmd_getKeyName(int key);
int cmd_getKeyCode(const char* name);

void cmd_keyDown(int key);
void cmd_keyUp(int key);

#endif //_CMD_BIND_H_